#!/usr/bin/env python
# -*- coding:UTF-8 -*-

'''
Created on 2018年7月23日

@author: Administrator
'''

from selenium import webdriver
import csv

# 新版本的Selenium不再支持PhantomJS了，请使用Chrome或Firefox的无头版本来替代。
# from selenium.webdriver.chrome.options import Options

# chrome_options = Options()
# chrome_options.add_argument('--headless')
# chrome_options.add_argument('--disable-gpu')


# 网易云音乐歌单第一页的url
url = "http://music.163.com/#/discover/playlist/"\
"?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset=0"

# 用PhantomJS接口创建一个Selenium的WebDriver
# 新版本的Selenium不再支持PhantomJS了，请使用Chrome或Firefox的无头版本来替代。
driver = webdriver.PhantomJS()

# 准备好存储歌单的csv文件
csv_file = open("playlist.csv","w")
writer = csv.writer(csv_file)
writer.writerow(['标题','播放数','链接'])

# 解析每一页，直到“下一页”为空
while url != "javascript:void(0)":
    # 用WebDriver加载页面
    driver.get(url)
    # 切换到内容的iframe
    driver.switch_to.frame("contentFrame")
    # 定位歌单标签
    li_list = driver.find_element_by_id("m-pl-container").find_elements_by_tag_name("li")
    print 'li_list:',li_list
    if len(li_list)>0:
        # 解析一页中的所有歌单
        for i in range(len(li_list)):
            # 获取播放数
            nb = li_list[i].find_element_by_class_name("nb").text # <span class="nb">81万</span>
            nb = nb.encode("utf-8")
            if '万' in nb:
                print "=====test:",unicode(nb.split("万")[0])
            if ('万' in nb) and (int(nb.split("万")[0])>500):
                # 获取播放数大于500万的歌单的封面
                msk = li_list[i].find_element_by_css_selector("a.msk")
                # 把封面上的标题和链接连同播放数一起写到文件中
                writer.writerow([msk.get_attribute('title').encode("utf-8"),nb,msk.get_attribute('href').encode("utf-8")])
                
    # 定位‘下一页’的url
    url = driver.find_element_by_css_selector("a.zbtn.znxt").get_attribute('href')

csv_file.close()
driver.close()











